// 第一层封装。 默认地址 超时 拦截器
import axios from "axios";
// 引入UI的弹窗
import { ElMessage } from 'element-plus'
// 引入工具js
import local from "@/utils/local";
import router from "@/router";

// axios默认地址和超时
let http = axios.create({
    baseURL: import.meta.env.VITE_BASE_URL,  // 代理服务器中的地址
    timeout: 10000
})

// 2个拦截器 请求拦截器-携带token 响应拦截器-响应后做操作（弹窗）
http.interceptors.request.use((config) => {
    let tk = local.get("tk");  // 从本地取一下token
    if(tk){
        config.headers.Authorization = "Bearer " + tk;
    }
    return config
}, (err) => {
    return Promise.reject(err)
})

// 响应拦截器 做弹窗处理
http.interceptors.response.use((res) => {
    // console.log(res);
    if( res.data.msg ){  // 只有当msg存在 才走下面的判断弹出弹窗 否则不执行其他代码
        let { code, msg } = res.data;
        if (code == 0) {
            // 成功 弹绿色弹窗
            ElMessage({
                message: msg,
                type: 'success',
            })
        } else {
            // 失败 弹红色弹窗
            ElMessage.error(msg)
        }
    }
    return res
}, (err) => {
    // 判断返回的状态码是不是401 如果是:清空他设置的错误token并重新登录
    console.log(err.response.data.code)
    if( err.response.data.code == 401 ){
        local.clear();
        router.push("/login")
    }
    return Promise.reject(err)
})

// 暴露你改造后的axios
export default http
